#ifndef __OFFLINE_WEBPAGE_H__
#define __OFFLINE_WEBPAGE_H__
#include "../../libs/SplitTool.hpp"
#include <string>
#include <vector>
#include <map>
#include <set>
using std::map;
using std::pair;
using std::set;
using std::string;
using std::vector;

namespace SE
{
    const static size_t TOPK_NUMBER = 20;

    class WebPage
    {
    public:
        WebPage(const string &doc, SplitTool &splitTool, set<string>& stopWords);
        string getDoc() const;
        int getTotal() const; 
        map<string, int> &getWordsMap();

        //判断两篇文章是否相等
        friend bool operator==(const WebPage &lhs, const WebPage &rhs);

    private:
        void parse();                   //使用cppjieba，对格式化文档进行处理
        void save(const string &s); //进行词频统计
        void TopK(size_t k);             //topK算法计算频率最高的k个单词

    private:
        string _doc;    // <doc> .. </doc>
        string _title;
        string _link; 
        string _description;
        string _content;
        int _total;     // 单词总数
        vector<string> _topWords;   // 该篇文章频率最高的前k个词
        map<string, int> _wordsMap; // <单词，频率>
        SplitTool &_splitTool;      
        set<string> &_stopWords;   
    };

}

#endif